#ifndef DSPSIMULATOR_SINGLEREG_H
#define DSPSIMULATOR_SINGLEREG_H

#include "dspSimulator/operand/operand.h"

namespace dspsimulator {
    class SingleReg : public Operand {
    private:
        RegKind m_reg;
    public:
        explicit SingleReg(RegKind reg) :
                m_reg(reg), Operand(OperandKind::ONE_REG) {}

        SingleReg(const SingleReg &) = default;

        SingleReg(SingleReg &&) = default;

        SingleReg &operator=(const SingleReg &) = default;

        SingleReg &operator=(SingleReg &&) = default;

        ~SingleReg() override = default;

        RegKind reg() const {
            return m_reg;
        }

        std::string to_string() const override {
            return reg_names[static_cast<u32>(m_reg)];
        }
    };
}
#endif //DSPSIMULATOR_SINGLEREG_H
